home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / phagexsources.lha / source / TrackerRunner.s < prev    next >
Text File  |  1994-07-09  |  7KB  |  362 lines

  1. ; Hard-Trackdisk Example Routine - Loads sectors 880 to 883 off drive 0
  2. ; into $c0000 with an MFM buffer at $f0000
  3. ; No interrupts/exceptions are interfered with, and code is fully multi-
  4. ; taskable (within a Hardware or System based program)
  5. ;
  6. ; This is not an interupt-driven routine. nor will it ever be, i couldn't
  7. ; be fucked to do it...  but wait n'see,  i may have something sticky up
  8. ; my sleeve.
  9. ;
  10. ; Coded by psyKo, extreme hassle and lots of time have gone into this fucker
  11. ; so i hope you spread 4 all 2 c..          (retro corp production, 19/5/93)
  12.  
  13. ; Note:  This is the new-improved meatier/chunkier version..
  14. ; New control codes for the NuTrakker Segment are:
  15.  
  16. ; d0 = 0   -   Find available drives
  17. ; d0 = 1   -   (new function)  Reset drive (d1=drive) head to track zero
  18. ; d0 = 2   -   Read Sectors
  19.  
  20. ; The Zero Head function you should use before you load a set of sectors,
  21. ; NOTE:  you dont have to do it every time you access the disk, just use
  22. ; it in initialization, and after a disk-change, or before a mass-multiple
  23. ; sector read (several Trakker Read Calls)...  i hope it worx
  24.  
  25.     Opt    c-
  26.     Section    "HardNuTrackDisk Example",Code_c
  27.  
  28.     IncDir    TransorbSource:
  29.  
  30. Drive    = 1
  31.  
  32. Start    Movem.l    d0-d7/a0-a6,-(sp) 
  33.     Bsr    KillSys      
  34.     
  35.     Lea    CopperList(pc),a0 
  36.     Lea    HardWare,a6      
  37.     Move.l    a0,Cop1Lc(a6)      
  38.     Move.w    #$83c0,DMACon(a6)
  39.  
  40. *****************************************************************************
  41.  
  42.     Moveq    #0,d0    ; Setup Code
  43.     Bsr    TrackDisk+$20    ; Find Active Drives    
  44.  
  45. ; d0 - is returned with active disk drives, bits 0-3 represent drives 0-3
  46.  
  47. *****************************************************************************
  48.  
  49.     Moveq    #1,d0    ; Zero Head Code
  50.     Moveq    #0,d1    ; Zero drive number
  51.     Bsr    TrackDisk+$20    ; Reset Track.
  52.  
  53.     Moveq    #1,d0    ; Zero Head Code
  54.     Moveq    #1,d1    ; Zero drive number
  55.     Bsr    TrackDisk+$20    ; Reset Track.
  56.     
  57.     Moveq    #2,d0    ; Read Sector Code
  58.     Moveq    #0,d1    ; Drive Number
  59.     Move.w    #880,d2    ; Start Sector 880
  60.     Move.w    #883,d3    ; End Sector 883
  61.     Lea    $c0000,a0    ; Data Address
  62.     Lea    $f0000,a1    ; MFM Buffer pointer
  63.     Bsr    TrackDisk+$20    ; Read Sectors
  64.  
  65.     Moveq    #2,d0    ; Read Sector Code
  66.     Moveq    #1,d1    ; Drive Number
  67.     Move.w    #400,d2    ; Start Sector 0
  68.     Move.w    #433,d3    ; End Sector 3
  69.     Lea    $c8000,a0    ; Data Address
  70.     Lea    $f0000,a1    ; MFM Buffer pointer
  71.     Bsr    TrackDisk+$20    ; Read Sectors
  72.  
  73.     Moveq    #2,d0    ; Read Sector Code
  74.     Moveq    #1,d1    ; Drive Number
  75.     Move.w    #1740,d2    ; Start Sector 0
  76.     Move.w    #1759,d3    ; End Sector 3
  77.     Lea    $d0000,a0    ; Data Address
  78.     Lea    $f0000,a1    ; MFM Buffer pointer
  79.     Bsr    TrackDisk+$20    ; Read Sectors
  80.  
  81.     Moveq    #2,d0    ; Read Sector Code
  82.     Moveq    #0,d1    ; Drive Number
  83.     Move.w    #1740,d2    ; Start Sector 0
  84.     Move.w    #1759,d3    ; End Sector 3
  85.     Lea    $d0000,a0    ; Data Address
  86.     Lea    $f0000,a1    ; MFM Buffer pointer
  87.     Bsr    TrackDisk+$20    ; Read Sectors
  88.  
  89. ; read those fucking sectors in from 880 to 883 off drive 1, fucking less
  90. ; hassle than fucking trackdisk.device, and no fucking Amiga fucking DOS
  91. ; to share your disgusting fucking memory fucking with...
  92.  
  93. *****************************************************************************
  94.  
  95. ; pleese, just dont ask why i'm fucking pissed off..
  96.  
  97.     Bsr    ReturnSys      
  98.     Movem.l    (sp)+,d0-d7/a0-a6 
  99.     Moveq    #0,d0      
  100.     Rts
  101.  
  102. KillSys    Bsr.s    SysWait    
  103.  
  104.     Move.l    $4,a6    
  105.     Lea    GFXName(pc),a1    
  106.     Moveq    #0,d0    
  107.     Jsr    -552(a6)    
  108.         
  109.     Lea    OldCop1(pc),a5
  110.     Move.l    $26(a0),$0(a5)    
  111.     Move.l    $32(a0),$4(a5)    
  112.     
  113.     Lea    HardWare,a6
  114.     Move.w    IntEnaR(a6),d0    
  115.     Move.w    DMAConR(a6),d1  
  116.     Or.w    #$8000,d0    
  117.     And.w    #$03ff,d1    
  118.     Or.w    #$8000,d1    
  119.     Move.w    d0,$8(a5)    
  120.     Move.w    d1,$a(a5)    
  121.     
  122.     Move.w    #$7fff,IntEna(a6) 
  123.     Move.w    #$7fff,DMACon(a6) 
  124.     Rts
  125.  
  126. SysWait    Move.w    #15,d7    
  127. SysWaitLoop    Move.l    #$05000,d1    
  128.     Bsr.s    WaitVBL    
  129.     Bsr.s    DoWaitVBL    
  130.     Dbf    d7,SysWaitLoop    
  131.     Rts
  132.  
  133. DoWaitVBL    Move.l    #$03000,d1    
  134. WaitVBL    Movem.l    d0-d1/a6,-(sp)    
  135.     Lea    HardWare,a6    
  136. WaitVBLLoop    Move.l    VPosR(a6),d0    
  137.     And.l    #$1ff00,d0    
  138.     Cmp.l    d1,d0    
  139.     Bne.s    WaitVBLLoop    
  140.     Movem.l    (sp)+,d0-d1/a6    
  141.     Rts        
  142.  
  143. ReturnSys    Lea    HardWare,a6    
  144.     Move.w    OldIntEna(pc),IntEna(a6)
  145.     Move.w    OldDMACon(pc),DMACon(a6)
  146.     Move.l    OldCop1(pc),Cop1lc(a6)
  147.     Move.l    OldCop2(pc),Cop2lc(a6)
  148.     Rts
  149.  
  150. GFXName    Dc.b    "graphics.library",0
  151.     Even
  152. OldCop1    Dc.l    0    
  153. OldCop2    Dc.l    0    
  154. OldIntEna    Dc.w    0    
  155. OldDmaCon    Dc.w    0    
  156. Screen    Dc.l    $c0000    
  157.  
  158. Cmv    Macro
  159.     Dc.w    \2,\1
  160.     EndM
  161.     
  162. Cwt    Macro
  163.     Dc.w    (\1*$100)+$01,$fffe
  164.     EndM    
  165.  
  166. Pal    Macro
  167.     Dc.w    $ffe1,$fffe
  168.     EndM    
  169.  
  170. EndCop    Macro
  171.     Dc.w    $ffff,$fffe
  172.     EndM    
  173.  
  174. CopperList    Cwt    $15    
  175.     Cmv    $0200,BplCon0    
  176.     Cmv    $00bb,BplCon1    
  177.     Cmv    $000a,BplCon2    
  178.     Cmv    $0034,DdfStrt    
  179.     Cmv    $00c8,DdfStop    
  180.     Cmv    $1681,DiwStrt    
  181.     Cmv    $36c1,DiwStop
  182.     Cmv    $0,BplMod1    
  183.     Cmv    $0,BplMod2    
  184.     
  185. CopperCols    Cwt    $25        
  186.     Cmv    $0,Color00
  187.     Cmv    $0,Color01
  188.     Cmv    $0,Color02
  189.     Cmv    $0,Color03
  190.     Cmv    $0,Color04
  191.     Cmv    $0,Color05
  192.     Cmv    $0,Color06
  193.     Cmv    $0,Color07
  194.     Cmv    $0,Color08
  195.     Cmv    $0,Color09
  196.     Cmv    $0,Color10
  197.     Cmv    $0,Color11
  198.     Cmv    $0,Color12
  199.     Cmv    $0,Color13
  200.     Cmv    $0,Color14
  201.     Cmv    $0,Color15
  202.     Cmv    $0,Color16
  203.     Cmv    $0,Color17
  204.     Cmv    $0,Color18
  205.     Cmv    $0,Color19
  206.     Cmv    $0,Color20
  207.     Cmv    $0,Color21
  208.     Cmv    $0,Color22
  209.     Cmv    $0,Color23
  210.     Cmv    $0,Color24
  211.     Cmv    $0,Color25
  212.     Cmv    $0,Color26
  213.     Cmv    $0,Color27
  214.     Cmv    $0,Color28
  215.     Cmv    $0,Color29
  216.     Cmv    $0,Color30
  217.     Cmv    $0,Color31
  218.     
  219. CopperBPLS    Cmv    $c,BplPt0h    
  220.     Cmv    $0,BplPt0l    
  221.     Cmv    $0,BplPt1h    
  222.     Cmv    $0,BplPt1l    
  223.     Cmv    $0,BplPt2h    
  224.     Cmv    $0,BplPt2l    
  225.     Cmv    $0,BplPt3h    
  226.     Cmv    $0,BplPt3l    
  227.     Cmv    $0,BplPt4h
  228.     Cmv    $0,BplPt4l 
  229.     
  230.     Cwt    $28    
  231.     Cmv    $1200,BplCon0    
  232.  
  233.     EndCop
  234.  
  235. TrackDisk    Incbin    df0:Blank:CodeSegments/NuTrakkerFINAL-Seg
  236.  
  237. ****Custom Chip Registers****
  238.  
  239. Hardware    = $Dff000
  240.  
  241. ;Control Registers
  242.  
  243. Dmaconr    = $002
  244. Vposr    = $004
  245. Vhposr    = $006
  246. Joy0dat    = $00A
  247. Joy1dat    = $00C
  248. Clxdat    = $00E
  249. Intenar    = $01C
  250. Intereqr    = $01E
  251. Copcon    = $02E
  252.  
  253. ;Blitter Registers
  254.  
  255. Bltcon0    = $040
  256. Bltcon1    = $042
  257. Bltafwm    = $044
  258. Bltalwm    = $046
  259. Bltcpth    = $048
  260. Bltcptl    = $04A
  261. Bltbpth    = $04C
  262. Bltbptl    = $04E
  263. Bltapth    = $050
  264. Bltaptl    = $052
  265. Bltdpth    = $054
  266. Bltdptl    = $056
  267. Bltsize    = $058
  268. Bltcmod    = $060
  269. Bltbmod    = $062
  270. Bltamod    = $064
  271. Bltdmod    = $066
  272. Bltcdat    = $070
  273. Bltbdat    = $072
  274. Bltadat    = $074
  275.  
  276. ;Copper Registers
  277.  
  278. Cop1lc    = $080
  279. Cop1lch    = $080
  280. Cop1lcl    = $082
  281. Cop2lc    = $084
  282. Cop2lch    = $084
  283. Cop2lcl    = $086
  284. Copjmp1    = $088
  285. Copjmp2    = $08A
  286. Diwstrt    = $08E
  287. Diwstop    = $090
  288. Ddfstrt    = $092
  289. Ddfstop    = $094
  290. Dmacon    = $096
  291. Clxcon    = $098
  292. Intena    = $09A
  293. Intreq    = $09C
  294.  
  295. ;BitPlane Registers 
  296.  
  297. BplCon0    = $100
  298. BplCon1    = $102
  299. BplCon2    = $104
  300. BplMod1    = $108
  301. BplMod2    = $10a
  302.  
  303. BplPt0h    = $0e0
  304. BplPt0l    = $0e2
  305. BplPt1h    = $0e4
  306. BplPt1l    = $0e6
  307. BplPt2h    = $0e8
  308. BplPt2l    = $0ea
  309. BplPt3h    = $0ec
  310. BplPt3l    = $0ee
  311. BplPt4h    = $0f0
  312. BplPt4l    = $0f2
  313. BplPt5h    = $0f4
  314. BplPt5l    = $0f6
  315.  
  316. ;Colour Registers
  317.  
  318. Color00    = $180
  319. Color01    = $182
  320. Color02    = $184
  321. Color03    = $186
  322. Color04    = $188
  323. Color05    = $18a
  324. Color06    = $18c
  325. Color07    = $18e
  326. Color08    = $190
  327. Color09    = $192
  328. Color10    = $194
  329. Color11    = $196
  330. Color12    = $198
  331. Color13     = $19a
  332. Color14     = $19c
  333. Color15     = $19e
  334. Color16     = $1a0
  335. Color17     = $1a2
  336. Color18     = $1a4
  337. Color19     = $1a6
  338. Color20     = $1a8
  339. Color21     = $1aa
  340. Color22     = $1ac
  341. Color23     = $1ae
  342. Color24     = $1b0
  343. Color25     = $1b2
  344. Color26     = $1b4
  345. Color27     = $1b6
  346. Color28     = $1b8
  347. Color29     = $1ba
  348. Color30     = $1bc
  349. Color31     = $1be
  350.  
  351. EcsNop    = $1fe
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.